package com.tao.YanMoDesignPattern.composite.case3_ring;

import java.util.List;

/**
 * @Author Mi_Tao
 * @Date 2023/8/27
 * @Description
 * @Version 1.0
 **/
public abstract class Component {


    // 记录每个组件的路径
    private String componentPath = "";

    public String getComponentPath() {
        return componentPath;
    }

    public void setComponentPath(String componentPath) {
        this.componentPath = componentPath;
    }

    // 获取组件的名称
    public abstract String getName();

    // 记录父组件对象
    protected Component parent = null;
    public Component getParent() {
        return parent;
    }

    public void setParent(Component parent) {
        this.parent = parent;
    }

    // 返回某个组件的子组件对象
    public List<Component> getChildren(){
        throw new UnsupportedOperationException("该对象不支持此操作");
    }

    // 输出组件自身的名称
    public abstract void printStruct(String preStr);

    // 向组合对象中加入组件对象
    public void addChild(Component c){
        // 缺省实现，抛出例外，因为叶子对象没有此操作
        throw new UnsupportedOperationException("该对象不支持此操作");
    }

    // 从组合中移除某个组件对象
    public void removeChild(Component c){
        // 缺省实现
        throw new UnsupportedOperationException("该对象不支持此操作");
    }

    public Component getChildren(int index){
        // 缺省
        throw new UnsupportedOperationException("该对象不支持此操作");
    }
}
